<template>
	<view class="ui-switch" :class="[{ disabled: props.disabled }, props.ui]">
		<view class="ui-switch-wrapper" @tap="change">
			<view :style=" props.modelValue?'background-color: #007AFF;':''" class="ui-switch-input" :class="[
          { 'ui-switch-input-checked': props.modelValue },
          props.modelValue ? props.bg : '',
          props.text,
          props.size,
        ]"></view>
		</view>
	</view>
</template>

<script>
	export default {
		name: 'UiSwitch',
	};
</script>
<script setup>
	const props = defineProps({
		modelValue: {
			type: [Boolean, Number],
			default: false,
		},
		ui: {
			type: String,
			default: '',
		},
		bg: {
			type: String,
			default: 'ui-BG-Main',
		},
		text: {
			type: String,
			default: '',
		},
		size: {
			type: String,
			default: 'sm',
		},
		disabled: {
			type: Boolean,
			default: false,
		},
	});
	const emits = defineEmits(['update:modelValue']);

	const change = () => {
		emits('update:modelValue', !props.modelValue);
	};
</script>

<style lang="scss" scoped>
	.ui-switch {
		display: inline-block;
		cursor: pointer;

		.ui-switch-wrapper {
			display: inline-flex;
			align-items: center;
			vertical-align: middle;
		}

		.ui-switch-input {
			appearance: none;
			position: relative;
			width: 47px;
			height: 26px;
			outline: 0;
			border-radius: 16px;
			box-sizing: border-box;
			background-color: rgba(119, 119, 119, 0.3);
			transition: background-color 0.1s, border 0.1s;

			&:after {
				content: ' ';
				position: absolute;
				top: 0;
				left: 0;
				border-radius: 200px;
				transition: transform 0.3s;
				width: 20px;
				height: 20px;
				margin: 3px;
				background-color: #fff;
			}

			&.ui-switch-input-checked {
				&:after {
					transform: translateX(21px);
				}
			}
		}

		&.disabled {
			cursor: not-allowed;

			.ui-switch-input {
				opacity: 0.7;
			}
		}
	}
</style>